package com.muyu.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.muyu.common.core.domain.Result;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.system.Vo.FindCartVO;
import com.muyu.system.domain.*;
import com.muyu.system.dto.FindCartDTO;
import com.muyu.system.req.CartItemDto;
import com.muyu.system.req.ShoppingCartDto;
import com.muyu.system.req.ShoppingCartModificationDto;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * 购物车Service接口
 *
 * @author yangle
 * @date 2024-09-29
 */
public interface IDanmoShoppingCartService
{
    /**
     * 查询购物车
     *
     * @param id 购物车主键
     * @return 购物车
     */
    public DanmoShoppingProducts selectDanmoShoppingCartById(Long id);

    /**
     * 查询购物车列表
     *
     * @param danmoShoppingCart 购物车
     * @return 购物车集合
     */

    /**
     * 新增购物车
     *
     * @param danmoShoppingCart 购物车
     * @return 结果
     */
    public int insertDanmoShoppingCart(DanmoShoppingCart danmoShoppingCart);

    /**
     * 修改购物车
     *
     * @param shoppingCartModificationDto 购物车
     * @return 结果
     */
    public Result updateDanmoShoppingCart(ShoppingCartModificationDto shoppingCartModificationDto);

    /**
     * 批量删除购物车
     *
     * @param ids 需要删除的购物车主键集合
     * @return 结果
     */
    public Result deleteDanmoShoppingCartByIds(Long[] ids);

    /**
     * 删除购物车信息
     *
     * @param id 购物车主键
     * @return 结果
     */
    public int deleteDanmoShoppingCartById(Long id);


    /**
     * 查看购物车列表
     *
     * @param loginUser 购物车列表
     * @return 结果
     */
    ShoppingCartDto selectDanmoShoppingCartList(LoginUser loginUser);

    /**
     * 购物车结算
     *
     * @param ids 需要支付的订单id
     * @return 结果
     */
    Result<String> settlementDanmoShoppingCartByIds(Long[] ids);

    /**
     * 添加收藏
     * @param productsIds
     * @return
     */
    Result insertDanmoMarketCollect(Long[] productsIds);

    Result selectDanmoShoppingCart(ShoppingCartDto shoppingCartDto);



    IPage<FindCartVO> findCart(FindCartDTO findCartDTO);


    void deleteCart(Long id);


    void deleteCartList(List<Long> ids);
}
